package com.tycoin.utils;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Hashtable;

import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;

import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.common.BitMatrix;
import com.util.MatrixToImageWriter; 

 public class FTPupload { 
	 /** 
	 * Description: 向FTP服务器上传文件 
	 * @Version1.0 Jul 27, 2008 4:31:09 PM by 崔红保（cuihongbao@d-heaven.com）创建 
	 * @param url FTP服务器hostname 
	 * @param port FTP服务器端口 
	 * @param username FTP登录账号 
	 * @param password FTP登录密码 
	 * @param path FTP服务器保存目录 
	 * @param filename 上传到FTP服务器上的文件名 
	 * @param input 输入流 
	 * @return 成功返回true，否则返回false 
	 */
	 public static boolean uploadFile(String url,int port,String username, String password, String path, String filename, InputStream input) { 
	 boolean success = false; 
	 FTPClient ftp = new FTPClient(); 
	 ftp.setDataTimeout(6000);       //设置传输超时时间为60秒 
	 ftp.setConnectTimeout(6000);       //连接超时为60秒
	  
	 try { 
	 int reply; 
	 ftp.connect(url, port);//连接FTP服务器 
	 //如果采用默认端口，可以使用ftp.connect(url)的方式直接连接FTP服务器 
	 ftp.login(username, password);//登录 
	 reply = ftp.getReplyCode(); 
	 if (!FTPReply.isPositiveCompletion(reply)) { 
	 ftp.disconnect(); 
	 return success; 
	 } 
	 ftp.changeWorkingDirectory(path); 
	 ftp.storeFile(filename, input); 
	  
	 input.close(); 
	 ftp.logout(); 
	 success = true; 
	 } catch (IOException e) { 
	 e.printStackTrace(); 
	 } finally { 
	 if (ftp.isConnected()) { 
	 try { 
	 ftp.disconnect(); 
	 } catch (IOException ioe) { 
		 System.out.println(ioe.getMessage());
	 } 
	 } 
	 } 
	 return success; 
	 } 
	 
	 
	 
	 /**
	 * Description: 从FTP服务器下载文件
	 * @Version1.0 Jul 27, 2008 5:32:36 PM by 崔红保（cuihongbao@d-heaven.com）创建
	 * @param url FTP服务器hostname
	 * @param port FTP服务器端口
	 * @param username FTP登录账号
	 * @param password FTP登录密码
	 * @param remotePath FTP服务器上的相对路径
	 * @param fileName 要下载的文件名
	 * @param localPath 下载后保存到本地的路径
	 * @return
	 */ 
	 public static boolean downFile(String url, int port,String username, String password, String remotePath,String fileName,String localPath) { 
	     boolean success = false; 
	     FTPClient ftp = new FTPClient(); 
	     try { 
	         int reply; 
	         ftp.connect(url, port); 
	         //如果采用默认端口，可以使用ftp.connect(url)的方式直接连接FTP服务器 
	         ftp.login(username, password);//登录 
	         reply = ftp.getReplyCode(); 
	         if (!FTPReply.isPositiveCompletion(reply)) { 
	             ftp.disconnect(); 
	             return success; 
	         } 
	         ftp.changeWorkingDirectory(remotePath);//转移到FTP服务器目录 
	         FTPFile[] fs = ftp.listFiles(); 
	         for(FTPFile ff:fs){ 
	             if(ff.getName().equals(fileName)){ 
	                 File localFile = new File(localPath+"/"+ff.getName()); 
	                  
	                 OutputStream is = new FileOutputStream(localFile);  
	                 ftp.retrieveFile(ff.getName(), is); 
	                 is.close(); 
	             } 
	         } 
	          
	         ftp.logout(); 
	         success = true; 
	     } catch (IOException e) { 
	         e.printStackTrace(); 
	     } finally { 
	         if (ftp.isConnected()) { 
	             try { 
	                 ftp.disconnect(); 
	             } catch (IOException ioe) { 
	            	 System.out.println(ioe.getMessage());
	             } 
	         } 
	     } 
	     return success; 
	 }
 
	 
	 
}